package main

import (
	"database/sql"
	"fmt"
	"github.com/pkg/errors"
)

//1. 我们在数据库操作的时候，比如 dao 层中当遇到一个 sql.ErrNoRows 的时候，是否应该 Wrap 这个 error，抛给上层。为什么，应该怎么做请写出代码？
// a.需要。sql.ErrNoRows 不是一个致命错误。这个一个常规错误信息，常规的错误信息，要么选择降级处理，要么返回给上一层。dao层不涉及具体的业务逻辑处理，所以把这个错误抛给上层业务层去做对应的err处理
// b.如何处理：error 处理一次，避免"噪音"产生，内部返回通过wrap尽可能多的返回上下文信息给上层，有上层最终打印日志和信息处理

//homework 伪代码
func queryTest(db *sql.DB) {
	var field string
	err = db.QueryRow(sql).Scan(field)
	//错误处理
	if err != nil {
		return
		return errors.Wrap(err, fmt.Sprintf("sql:", sql))
	}
	return field
}
